package com.xiaobai.units;

import com.alibaba.fastjson.JSON;
import com.xiaobai.bo.FreeClassroomAll;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * @description:
 * @author: 小白白
 * @create: 2021-11-26
 **/

@Slf4j
public class FreeClassroomConvert {

    /**
     * 传进一天5节大课的空闲教室数据
     */
    public static FreeClassroomAll convert(String[] arr) {

        FreeClassroomAll freeClassroomAll = new FreeClassroomAll();
        for (int i = 0; i < arr.length; i++) {
            ClassroomAll classroomAll = JSON.parseObject(arr[i], ClassroomAll.class);
            int finalI = i;
            classroomAll.rows.forEach(classroom -> {
                freeClassroomAll
                        // 选择校区
                        .getCampusMap().get(classroom.xqmc)
                        // 选择教学楼
                        .getMap().get(classroom.jzwmc)
                        // 放入科室和空闲节次
                        .addItem(classroom.jxcdmc, classroom.rnskrs, finalI);
            });
        }

        // 每栋楼中的课程进行排序, 根据free数组的首true进行排序
        // 转为前端排序
//        for (Map.Entry<String, FreeClassroomCampus> entry : freeClassroomAll.getCampusMap().entrySet()) {
//            for (Map.Entry<String, FreeClassroomBuilding> buildingEntry : entry.getValue().getMap().entrySet()) {
//                List<FreeClassroomItem> list = buildingEntry.getValue().getList();
//                int sourceSize = list.size();
//                list.sort((i1, i2) -> {
//                    boolean[] f1 = i1.getFreeArr();
//                    boolean[] f2 = i2.getFreeArr();
//                    for (int i = 0; i < 5; i++) {
//                        // f1赢了f2没赢
//                        if (f1[i] && !f2[i]) {
//                            // f1在前面,本来是升序,现在返回-1就是降序了,符合规则
//                            return -1;
//                        } else if (!f1[i] && f2[i]) {
//                            // f2前面
//                            return 1;
//                        } else {
//                            if (i == 4) {
//                                // 比到最末端了,相等,那么默认f1在前面
//                                return 0;
//                            }
//                            // 继续++
//                        }
//                    }
//                    return 0;
//                });
//                int size = list.size();
//                if (size != sourceSize) {
//                    log.error("漏掉了数据!!!");
//                }
//            }
//        }

        return freeClassroomAll;
    }

    @Data
    private static class ClassroomAll {
        private Integer total;
        private List<Classroom> rows;
    }

    @Data
    private static class Classroom {

        // 校区
        private String xqmc;

        // 楼名
        private String jzwmc;

        // 科室名称
        private String jxcdmc;

        // 容纳人量
        private Integer rnskrs;

    }

    public static void main(String[] args) {
    }

}
